package com.ftg.learn.chapter02;

/**
 * 鼂
 * 暃
 * 昇
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/4/23 上午11:00
 */
public class Demo02 {
//(1) 编写一个 Java 程序，使用 for 循环计算 1 到 100 之间所有整数的和，并将结果打印到控制台。（10 分）
//
//(2) 编写一个 Java 程序，使用 for 循环打印出 1 到 100 之间所有的奇数。（10 分）

    public static void q1() {
        int sum = 0;
        for (int i = 1, max = 100; i <= max; i++) {
            sum += i;
        }

        for (int i = 1, max = 100; i < max; i++, max--) {
            sum += (i + max);
        }
        System.out.println(sum);
    }

    public static void q2() {
        for (int i = 1, max = 100, add = 2; i < max; i += add) {
            System.out.println(i);
        }

        for (int i = 1, max = 99; i < max; i += 2, max -= 2) {
            System.out.print(i);
            System.out.println(max);
        }
    }


    /**
     * 方法
     * 代码块里面的变量   形
     *
     * @param well 井深
     * @param jump 跳多高
     * @param down 下滑多少
     * @return index 次数
     */
    public static int jumpNo(int well, int jump, int down) {

        checkArguments(well, jump, down);
        //明确循环次数  初始值  最大值 差值
        int index = 0;
        for (int i = 0; (i = i + jump) <= well; i -= down) {
            index++;
        }
        return index;
    }

    /**
     * 面向写类  与方法进，要遵循 6个原则 1个法则
     * <p>
     * 1 : 单一职责 :  一个方法最好只完成一个功能,高内聚低偶合 ()  一个方法里面大量方法 内聚 （高） | 偶合 (低)
     *
     * @param well
     * @param jump
     * @param down
     */
    public static void checkArguments(int well, int jump, int down) {
        //容错处理
        if (well < 0) {
            //提示人家  (异常)
            throw new RuntimeException("参数well不能为负数");
        }

        if (down >= jump) {
            throw new RuntimeException("您给的参数没有意义，...........");
        }
    }

    /**
     * 方法 while
     * 代码块里面的变量   形
     *
     * @param well 井深
     * @param jump 跳多高
     * @param down 下滑多少
     * @return index 次数
     */
    public static int jumpNoWithWhile(int well, int jump, int down) {

        checkArguments(well, jump, down);

        int frogPosition = 0;
        int index = 0;
        //不明确次数使用while
        while ((frogPosition += jump) < well) {
            index++;
            frogPosition -= down;
        }
        return index;
    }

    /**
     * do while
     *
     * @param well
     * @param jump
     * @param down
     * @return
     */
    public static int jumpNoWithDoWhile(int well, int jump, int down) {
        int position = 0;
        int index = 0;
        do {
            if (index != 0) {
                position -= down;
            }
            position += jump;
            index++;
        } while (position < well);
        return index;
    }

    /**
     * 回文数
     *
     * @param x 整数
     * @return
     */
    public static boolean huiWenShu(int x) {
        // 如何存次幂 Math
//        算出共有几位数
        int index = 0;
        while(x / ((int)Math.pow(10,index)) != 0){
            index++;
        }
        System.out.println(index);
        //假如说现在有四位数
        for (int i = 0, j = index - 1; i < j; i++, j--) {
            int i10 = (int)Math.pow(10,i);
            int j10 = (int)Math.pow(10,j - 1);

            int ival = x / i10 % 10;
            int jval = x / j10 % 10;
            if(ival != jval){
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {

        System.out.println(huiWenShu(Integer.MAX_VALUE));
//        System.out.println(jumpNo(7, 1, 3));

//        System.out.println(jumpNoWithWhile(7, 3, 1));
//        a b c (4以内0,不能重复)
//        数据帮助类 Math.random()*5;
//        (int)(Math.random()*5);
//        int a = (int)(Math.random()*5);;
//        int b = (int)(Math.random()*5);;
//        int c = (int)(Math.random()*5);;

        int a = 0, b = 0, c = 0;

        //是否可以通过取出相应同学姓名

        //第一个不重复的4以内的整数
        int index = 0;
        while (index < 3) {
            int temp = (int) (Math.random() * 4) + 1;

            if (temp != a && temp != b && temp != c) {
                index++;
                if (index == 1) {
                    a = temp;
                }
                if (index == 2) {
                    b = temp;
                }
                if (index == 3) {
                    c = temp;
                }
            }
        }
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
//    (int)(Mathh.random()*(最大值-最小值 + 1)) + 最小值


    }
}
